package com.qsdm.es.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.qsdm.es.dao.*;
import com.qsdm.es.persistence.Formacion;
import com.qsdm.es.persistence.Idioma;
import com.qsdm.es.persistence.Nivelformacion;
import com.qsdm.es.persistence.Profesion;
import com.qsdm.es.persistence.Sectorprofesional;
import com.qsdm.es.persistence.Tipocontrato;
import com.qsdm.es.persistence.Tipoformacion;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Engine {

    /**
     * @param args
     * @throws Exception
     */
    @SuppressWarnings("unused")
	public static void main(String[] args) {
        // TODO Auto-generated method stub
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("META-INF/applicationContext.xml");


        ProfesionJpaController ProfesionJpaController = (ProfesionJpaController) ctx.getBean("ProfesionJpaController");
        SectorprofesionalJpaController SectorprofesionalJpaController = (SectorprofesionalJpaController) ctx.getBean("SectorprofesionalJpaController");
        NivelformacionJpaController NivelformacionJpaController=(NivelformacionJpaController)ctx.getBean("NivelformacionJpaController");
        TipocontratoJpaController TipocontratoJpaController=(TipocontratoJpaController)ctx.getBean("TipocontratoJpaController");
        TipoformacionJpaController TipoformacionJpaController=(TipoformacionJpaController)ctx.getBean("TipoformacionJpaController");
        IdiomaJpaController IdiomaJpaController=(IdiomaJpaController)ctx.getBean("IdiomaJpaController");
        FormacionJpaController FormacionJpaController=(FormacionJpaController)ctx.getBean("FormacionJpaController");
         File aFile = new File("C:\\Users\\alberto\\Documents\\NetBeansProjects\\mavenproject1\\src\\main\\java\\com\\qsdm\\es\\persistence\\ocupaciones");
        try{
            //use buffering, reading one line at a time
            //FileReader always assumes default encoding is OK!
            BufferedReader input = new BufferedReader(new FileReader(aFile));

            String line = null; //not declared within while loop
        /*
             * readLine is a bit quirky : it returns the content of a line MINUS
             * the newline. it returns null only for the END of the stream. it
             * returns an empty String if two newlines appear in a row.
             */
            Sectorprofesional maestro=null;
            Sectorprofesional submaestro=null;
            while ((line = input.readLine()) != null) {
                System.out.println("Readed line:" + line);
                String partes[] = line.split("	");
                
                if (partes[0].length() == 1) {
                    if (Character.isDigit(partes[0].charAt(0))) {
                        System.out.println("    ****** Leido Sector profesional maestro:"+line);
                        Sectorprofesional sectorprofesional=new Sectorprofesional();
                        sectorprofesional.setCodigo(partes[0]);
                        sectorprofesional.setNombre(partes[1]);
                        if(SectorprofesionalJpaController.findSectorprofesionalByCodigo(partes[0])==null)
						SectorprofesionalJpaController.create(sectorprofesional,true);
						maestro=sectorprofesional;
                    }else {
                    	if(maestro!=null){
                    		Sectorprofesional sectorprofesional=new Sectorprofesional();
                            sectorprofesional.setCodigo(partes[0]);
                            sectorprofesional.setNombre(partes[1]);
                            submaestro=sectorprofesional;
                            sectorprofesional.setSectorProfesionalPadre(maestro);
                            if(SectorprofesionalJpaController.findSectorprofesionalByCodigo(partes[0])==null)
    						SectorprofesionalJpaController.create(sectorprofesional,true);    
    						
                    	}
                    System.out.println("    ......... Leido sub Sector profesional de primer nivel:"+line);}
                }else {
                	
                	Sectorprofesional sectorprofesional=new Sectorprofesional();
                    sectorprofesional.setCodigo(partes[0]);
                    sectorprofesional.setNombre(partes[1]);
                    if(sectorprofesional.getCodigo().length()==3){
                    	String codigopadre=	partes[0].substring(0,2);
                    Sectorprofesional pa = SectorprofesionalJpaController.findSectorprofesionalByCodigo(codigopadre);
                    sectorprofesional.setSectorProfesionalPadre(pa);
                    if(SectorprofesionalJpaController.findSectorprofesionalByCodigo(partes[0])==null)
                    SectorprofesionalJpaController.create(sectorprofesional,true);
                    
                    }
                    else if(sectorprofesional.getCodigo().length()==2){
                    	String codigopadre=	partes[0].substring(0,1);
                          sectorprofesional.setSectorProfesionalPadre(submaestro);
                         if(SectorprofesionalJpaController.findSectorprofesionalByCodigo(partes[0])==null)
                         SectorprofesionalJpaController.create(sectorprofesional,true);
                    	
                    }else {
                    	String codigopadre=	partes[0].substring(0,3);
                    	Sectorprofesional pa = SectorprofesionalJpaController.findSectorprofesionalByCodigo(codigopadre);
                    	Profesion pro=new Profesion();
                    	pro.setCodigo(partes[0]);
                    	pro.setNombre(partes[1]);
                    	pro.setSectorProfesional(pa);
                    	pro.setNivelCualifiacion((((int)Math.random()*10)));
                    	//ProfesionJpaController.create(pro, true);
                    } 
                    
                    System.out.println("    ______________ Leido Sector profesional de nivel:"+partes[0].length());
                }
            }

        input.close();
        }catch (Exception ex){
      ex.printStackTrace();
    }
        /*
        aFile = new File("C:\\Users\\alberto\\Documents\\NetBeansProjects\\mavenproject1\\src\\main\\java\\com\\qsdm\\es\\persistence\\nivelformacion");
        try{
            //use buffering, reading one line at a time
            //FileReader always assumes default encoding is OK!
            BufferedReader input = new BufferedReader(new FileReader(aFile));

            String line = null; //not declared within while loop
       
            Sectorprofesional maestro=null;
            Sectorprofesional submaestro=null;
            while ((line = input.readLine()) != null) {
                System.out.println("Readed line:" + line);
                String partes[] = line.split("	");
                
                    	Nivelformacion pro=new Nivelformacion();
                    	pro.setCodigo(partes[0]);
                    	pro.setNombre(partes[1]);
                    	NivelformacionJpaController.create(pro, true);
                    
                    
                    System.out.println("    ______________ Leido Sector profesional de nivel:"+partes[0].length());
              
            }

        input.close();
        }catch (Exception ex){
        	
      ex.printStackTrace();
    }*/
        aFile = new File("C:\\Users\\alberto\\Documents\\NetBeansProjects\\mavenproject1\\src\\main\\java\\com\\qsdm\\es\\persistence\\competetncias");
        try{
            //use buffering, reading one line at a time
            //FileReader always assumes default encoding is OK!
            BufferedReader input = new BufferedReader(new FileReader(aFile));

            String line = null; //not declared within while loop
        /*
             * readLine is a bit quirky : it returns the content of a line MINUS
             * the newline. it returns null only for the END of the stream. it
             * returns an empty String if two newlines appear in a row.
             */
            Sectorprofesional maestro=null;
            Sectorprofesional submaestro=null;
            while ((line = input.readLine()) != null) {
                System.out.println("Readed line:" + line);
                String partes[] = line.split(";");
                
                Integer niv=((int)(Math.random()*113)+61);
                Nivelformacion nivel = NivelformacionJpaController.findNivelformacion(niv);
                Tipoformacion tipo = TipoformacionJpaController.findTipoformacionByCodigo(partes[2]);
                    	Formacion pro=new Formacion();
                    	pro.setCodigo(partes[0]);
                    	pro.setNombre(partes[1]);
                    	pro.setTipoFormacion(tipo);
                    	pro.setNivelFormacion(nivel);
                    	FormacionJpaController.create(pro, true);
                    
                    
                    System.out.println("    ______________ Leido Sector profesional de nivel:"+partes[0].length());
              
            }

        input.close();
        }catch (Exception ex){
        	
      ex.printStackTrace();
    }
      /*  aFile = new File("C:\\Users\\alberto\\Documents\\NetBeansProjects\\mavenproject1\\src\\main\\java\\com\\qsdm\\es\\persistence\\tipoformacion");
        try{
            //use buffering, reading one line at a time
            //FileReader always assumes default encoding is OK!
            BufferedReader input = new BufferedReader(new FileReader(aFile));

            String line = null; //not declared within while loop
    
            Sectorprofesional maestro=null;
            Sectorprofesional submaestro=null;
            while ((line = input.readLine()) != null) {
                System.out.println("Readed line:" + line);
                String partes[] = line.split("	");
                
                
                    	Tipoformacion pro=new Tipoformacion();
                    	pro.setCodigo(partes[0]);
                    	pro.setNombre(partes[1]);
                    	TipoformacionJpaController.create(pro, true);
                    
                    
                    System.out.println("    ______________ Leido Sector profesional de nivel:"+partes[0].length());
              
            }

        input.close();
        }catch (Exception ex){
        	
      ex.printStackTrace();
    }*/
        
}
}
